//
//  STFOAuthViewModel.swift
//  高仿新浪微博
//
//  Created by 沈腾飞 on 2017/2/5.
//  Copyright © 2017年 shen. All rights reserved.
//

import UIKit

class STFOAuthViewModel: NSObject {

    // 全局访问点
    static let shared:STFOAuthViewModel = STFOAuthViewModel()
    
   
    
    
    
    
    
    
   

    
}



// OAuth界面请求数据
extension STFOAuthViewModel{
    // 请求获取accessToken
    func getUserAccount(code: String, isFinish:@escaping (Bool)->()){
        
        STFNetworkTools.shared.getUserAccount(code: code, success: {(response)->() in
            // 判断response 是否为nil 而且是否是一个字典
            // if-let 或者guard-let 做类型转换的时候 是用as?
            guard let res = response as? [String: Any] else {
                // 执行闭包
                isFinish(false)
                return
            }
            // 字典转模型
            let userAccountModel = STFUserAccountModel.yy_model(withJSON: res)
            
            // 判断是否为nil
            guard let u = userAccountModel else {
                // 执行闭包
                isFinish(false)
                return
            }
            // 请求个人信息数据
            self.getUserInfo(userAccountModel: u, isFinish: isFinish)
        }, failure: {(error)->() in
            print("失败",error)
            // 执行闭包
            isFinish(false)
        })
        
    }
    
    // 获取用户信息数据
    func getUserInfo(userAccountModel: STFUserAccountModel, isFinish:@escaping (Bool)->()){
        STFNetworkTools.shared.loadUserInfo(userAccountModel: userAccountModel, success: {(response)->() in
            // 判断response 是否为nil  切是否可以转成字典
            guard let res = response as? [String: Any] else{
                // 执行闭包
                isFinish(false)
                return
            }
            // 赋值
            userAccountModel.screen_name = res["screen_name"] as? String
            userAccountModel.avatar_large = res["avatar_large"] as? String
            // 保存用户模型
//            self.saveUserAcountModel(userAccountModel: userAccountModel)
            // 最后到底成功了
            isFinish(true)
            
        }, failure: {(error)->() in
            print("错误",error)
            // 执行闭包
            isFinish(false)
        })
    }
}
